今天是鐵人的第22天,主要要來介紹股票和投資股票前的一些數學常識(從網路文章中擷取),今天程式的部分比較少,主要是講股票的觀念。接下來的幾個章節才會開始進入股票分析。
使用python來分析真實世界的財經資料
在台灣處理股票的單位叫做「台灣證券交易所」股份有限公司,成立為1961年10月3日。
資料來源1
台灣證券交易所
證券櫃買賣中心 - 上櫃
證券櫃買賣中心 - 興櫃
公開發行公司 | 上市公司 | 上櫃公司 | 興櫃公司
------------- | -------------
數量 | 920 | 763 | 257
市值 | 285,972.81(億元) | 2,607,551(佰萬) | 510,665(佰萬)
用套件抓取某個股票的歷史資料時,格式通常會如下
日期 | 最高價High | 最低價Low | 開盤價Open | 收盤價Close | 成交量Volume | 調整後收盤價Adj Close |
---|---|---|---|---|---|---|
2015-01-05 | 140.5 | 137.5 | 140.5 | 139.5 | 32046000.0 | 121.474525 |
股票的價格取決於競標的形式。
開盤價:指的是9點開盤之前,把每一個股票買賣當量做統計所訂出的價格。
收盤價:股票收盤之前,把每一個股票買賣當量做統計所訂出的價格。
日報酬率:把前一天的收盤價和今天的收盤價做比較。
money = 10
first_month = 10*(1+1)
second_month = first_month*(1-0.5)
print('第一個月收益:',first_month)
print('第二個月收益:',second_month)
# 輸出結果
第一個月收益: 20
第二個月收益: 10.0
結論是虧損比賺錢容易
money = 10
up_first_day = 10*(1+0.1)
up_second_day = up_first_day*(1-0.1)
down_first_day = 10*(1-0.1)
up_second_day = down_first_day*(1+0.1)
print('第一種股票餘額:',up_second_day)
print('第二種股票餘額:',up_second_day)
# 輸出結果
第一種股票餘額: 9.9
第二種股票餘額: 9.9
結論是漲跌不管前後餘額都一樣
import math as math
money = 10
six_year = 10*(1+0.4)*(1-0.2)*(1+0.3)*(1-0.2)*(1+0.5)*(1-0.2)
rate = math.pow((six_year/money),1/6)-1
print('六年後的資本額:',six_year, " 年報酬率:",rate)
# 輸出結果
六年後的資本額: 13.977600000000004 年報酬率: 0.05739868994194808
波動性大的股票,年報酬率有時候還會輸績優股
money = 50
day = 250
print('一年的資本額:',math.pow(1+0.01,day) * money, " 二年的資本額:",math.pow(1+0.01,day*2) * money)
# 輸出結果
一年的資本額: 601.6077884148732 二年的資本額: 7238.638621628698
就算每次報酬只有1%,但只要穩定投資,也可以成長為大資本
money = 100
big_risk = 20
print('最佳投資:', ( (100-big_risk)*(1+0.05) + (big_risk)*(1+0.4)))
print('最差投資:', ( (100-big_risk)*(1+0.05) + (big_risk)*(1-0.2)))
print('平均投資:', ( (100-big_risk)*(1+0.05) + (big_risk)*0.5*(1-0.2) + (big_risk)*0.5*(1+0.4) ))
# 輸出結果
最佳投資: 112.0
最差投資: 100.0
平均投資: 106.0
最好的年報酬率可以到0.12,最差就攤平,這就是保本基金CPPI技術的雛形。
關於做空
做空最大的收益率就是100%,前提是這支股票下市,但做多的收益率是沒有上限的,因此不要永遠的做空。除非你不相信人類社會會前進。
關於賭場贏利
分析了澳門賭客1000個數據,發現勝率為0.53,輸的是0.47,但是如果加上人性去算,
贏錢而離場的人平均贏利為0.34,但輸錢而離場的人卻虧損0.72,因此賭場並不需要做局來降低勝率,只要依靠人性的弱點就可以持續贏,股市亦如此。
0.53*0.34+0.47*(-0.72)
# 輸出結果
-0.15819999999999995
所以加上人性後來看,莊家還是賺錢的
從以上結論來看,所以為什麼要用程式交易,因為程式看的是數據,不會受心理因素影響。這也是筆者正在學習的,因為在寫這文章之前,筆者完全不懂Python,也不懂股票,更別說什麼數據分析的演算法,現在文章寫到20天,也只是了解Python基礎語法,和資料處理和圖形化,真正要進入股市分析也是一知半解,所以接下來的文章排版會更亂,都是用在網路上看到什麼內容在拿出來分享。